<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  //创建（2种方式）
  //1.git init （把本地文件夹转成git仓库）
  //2.从其他服务器克隆git仓库
  //以.开头的文件都会隐藏

  //git add 文件名路劲 暂存指定
  //git add. 暂存所有改动文件
  // git commit -m "注释说明" 提交保存，产生版本快照
  //git ls-files 查看当前文件暂存的所有文件
  //git status -s查看文件状态

  //git的3个区
  //工作区 暂存区 版本库

  //git文件状态
  //未跟踪（新文件未被git管理过）
  //已跟踪（git已经知道和管理的文件）
  // U（未跟踪）
  // A(新添加)
  // M（已修改，3个区域统一）
  // ''（未修改）

  //暂存区：暂时保存，可以临时回复代码内容，与版本解耦
  //暂存区覆盖工作区 git restore 目标文件
  //暂存区移除文件 git rm --cached(取消暂存)

  //版本回退
  //查看提交历史记录 git log --online
  //回退命令
  //git reset --soft 版本号 （尽可能保留，其他文件变为未被跟踪状态）
  //git reset --hard 版本号 （暂存区，工作区都会清除，比较彻底）
  //git reset --mixed 版本号 （与git reset等价）

  //删除文件
  //忽略文件 .gitignore文件可以让git彻底忽略跟踪指定文件
  //目的 让git仓库更快更小，避免重复无意义的文件管理
  //eg:
  //系统或者软件自动生成的文件
  //编辑产生的结果文件
  //运行时生成的日志文件，缓存文件，临时文件等
  //涉密文件，密码密钥文件

  //创建：
  //1.项目根目录新建文件.gitignore文件
  //2.填入相关配置忽略指定文件,无论哪个文件夹直接写名字（已经被跟踪了，移除即可）

  //分支
  //本质是指向提交节点的可变指针，默认名字master
  //head指针影响工作区暂存区的代码状态
  //使用场景：开发新业务，修bug,保证主线代码随时可用，多人协同开发，提高效率
  //创建分支 git branch 分支名（以当前head指针指向的提交记录作为起点，新分支指向这次提交记录）
  //切换分支 git checkout 分支名 （主要作用把head指针指向刚才新创建的分支下 why head指针会影响暂存区和工作区代码）
  //git checkout 'master' 切换回主分支

  //分支合并与删除
  //1.切回要合并的分支上 git checkout master
  //2.合并其他分支过来 git merge login-bug
  //3.删除合并后的分支指针 git branch -d login-bug
</body>

</html>